class Solution:
    def removeStars(self, s: str) -> str:
        """
        给你一个包含若干星号 * 的字符串 s 。

在一步操作中，你可以：

选中 s 中的一个星号。
移除星号 左侧 最近的那个 非星号 字符，并移除该星号自身。
返回移除 所有 星号之后的字符串。

注意：

生成的输入保证总是可以执行题面中描述的操作。
可以证明结果字符串是唯一的。
        :param s:
        :return:
        """
        #定义一个栈
        temp = []
        for i in s:
            if i == '*':
                temp.pop()
            else:
                temp.append(i)
        return ''.join(temp)

class Solution2:
    def removeStars(self, s: str) -> str:
        s_list = list(s)
        index = 0
        for c in s_list:
            if c != '*':
                s_list[index] = c
                index += 1
            else:
                index -= 1
        return ''.join(s_list[:index])

# 测试用例
if __name__ == "__main__":
    solution = Solution()
    test_cases = [
        "leet**cod*e",  # 输出 "lecoe"
        "erase*****",   # 输出 ""
        "abc*d**e*f*g", # 输出 "g"
    ]
    for s in test_cases:
        result = solution.removeStars(s)
        print(f"输入: {s}, 输出: {result}")
